n,m,c=input().split()
n,m=int(n),int(m)
a=[]
for i in range(n):
a.append(input())
d=set()
for i in range(n):
for j in range(m):
if a[i][j]!=c:
continue
if i-1>=0 and a[i-1][j]!='.' and a[i-1][j]!=c:
d.add(a[i-1][j])
if j-1>=0 and a[i][j-1]!='.' and a[i][j-1]!=c:
d.add(a[i][j-1])
if i+1<n and a[i+1][j]!='.' and a[i+1][j]!=c:
d.add(a[i+1][j])
if j+1<m and a[i][j+1]!='.' and a[i][j+1]!=c:
d.add(a[i][j+1])
print(len(d))
/*
___ _________ ___ ____
| | / / // \\ / \ | | / / // \\ | || | |
| | / / // \\ | ____ | | | / / // \\ | ||____| |
| |/ / //_____\\ | / \ | | |/ / //_____\\ | |_______|
| |\ \ //_______\\ | \____/ | | |\ \ //_______\\ | | ____ |
| | \ \ // \\ | | | | \ \ // \\ | || | |
| | \ \ // \\ \ __________/ | | \ \ // \\ | ||____| |
*/
#include<iostream>
#include <numeric>
#include<string>
#include<iostream>
#include<cmath>
#include<vector>
#include<map>
#include<algorithm>
#include<stack>
#include<queue>
#include<ostream>
#include <stdio.h>
#include <stdlib.h>
#include<iostream>
using namespace std;
#define fo(i,n) for (int i = 0; i < n; i++)
typedef vector<int> ve;
typedef vector<bool> vb;
typedef vector<ve> vee;
typedef long long ll;
typedef map<int, int> m;
ll GCD(ll a, ll b) { return (a) ? GCD(b % a, a) : b; }
ll LCM(ll a, ll b) { return a * b / GCD(a, b); }
#define all(a) (a).begin(), (a).end()
int dx[] = { -1,-1,-1,1,1,1 };
int dy[] = { -1, 0, 1,-1,0,1 };
int dx4[] = {0,0,1,-1};
int dy4[] = {-1,1,0,0};
//const string pi = "314159265358979323846264338327";
//void ragner()
//{
// string n;
// cin >> n;
// int c = 0;
// fo(i, n.size())
// {
// if (pi[i] == n[i])
// c++;
// else break;
// }
// cout << c;
//
//}
//void ragner()
//{
// int n,s,r;
// cin >> n>>s>>r;
// int y = s - r;
// ve a(n, 0);
// a[n - 1] = y;
// while (r>0)
// {
// fo(i, n - 1)
// {
// if (r == 0)
// break;
// else {
// a[i]++;
// r--;
// }
// }
// }
// fo(i, n)
// {
// cout << a[i] << " ";
// }
//}
//void ragner()
//{
// int n;
// cin >> n;
// map<int, int>ma;
// vector<vector<int>> a(n,vector<int>(n-1));
// int f;
// fo(i, n)
// {
// fo(j, n - 1)
// {
// int x; cin >> x;
// a[i][j] = x;
// if (j == n - 2)
// {
// ma[x]++;
// if (ma[x] > 1)
// f = x;
// }
// }
// }
// fo(i, n)
// {
// if (a[i][n - 2] != f)
// {
// fo(j, n - 1)
// {
// cout << a[i][j] << " ";
// }
// cout << f;
// break;
// }
// }
//}
//void ragner()
//{
// int n;
// cin >> n;
// ve ar(n);
// ve v;
// map<int,int> a;
// fo(i, n)
// {
// cin >> ar[i];
// if (a[ar[i]] == 0)
// v.push_back(ar[i]);
// a[ar[i]]++;
// }
// sort(all(v));
// int c = 0;
// fo(i, v.size())
// {
// while (a[v[i]] > 0)
// {
// c++;
// a[v[i]]--;
// int y = v[i];
// while (a[++y] > 0)
// {
// a[y]--;
// }
//
// }
// }
// cout << c;
//}
//void ragner()
//{
// int x;
// cin >> x;
// if (x % 2 != 0) { cout << -1; return; }
// int a = x + (x / 2);
// int b = x / 2;
// if ((a ^ b) == x)
// {
// cout << a << " " << b;
// }
// else cout << -1;
//}
//int n;
//int ye(int i,ve a)
//{
// int u = 0;
// for (size_t j = i; j > 0 ; j--)
// {
// if (a[j] - a[j - 1] >= 0)
// u++;
// else break;
// }
// return u;
//}
//int sh(int i, ve a)
//{
// int u = 0;
// for (size_t j = i; j < n-1; j++)
// {
// if (a[j] - a[j + 1] >= 0)
// u++;
// else break;
// }
// return u;
//}
//void ragner()
//{
// cin >> n;
// ve a(n);
// fo(i, n) cin >> a[i];
// int c = 0;
// if (n == 1)
// {
// cout << 1;
// return ;
// }
// fo(i, n)
// {
// int y = 0;
// if (i == 0)
// {
// for (size_t j = i; j < n-1; j++)
// {
// if (a[j] - a[j + 1] >= 0)
// y++;
// else break;
// }
// y++;
// }
// else if (i == n - 1)
// {
// for (size_t j = i; j > 0; j--)
// {
// if (a[j] - a[j - 1] >= 0)
// y++;
// else break;
// }
// y++;
// }
// else
// {
// int yemen = ye(i,a);
// int shemal = sh(i,a);
// y = yemen + shemal;
// y++;
// }
// c = max(c, y);
// }
// cout << c;
//}
//void ragner()
//{
// int n; int k;
// cin >> n >> k;
// ve a(n+1);
// fo(i, n) cin >> a[i];
// int l = k - 1;
// int r = k + 1;
// int c = 0;
// if (a[k] == 1)
// c++;
// while (l > 0||r<=n)
// {
// if (l>0&&r<=n&&a[l] == a[r] && a[r] == 1)
// c+=2;
// if (l > 0 && r > n && a[l] == 1)
// c++;
// if (l <= 0 && r <= n && a[r] == 1)
// c++;
// l--;
// r++;
// }
// cout << c;
//}
//void ragner()
//{
// int n, m;
// cin >> n >> m;
// vector<pair<int, int>>a(m);
// fo(i, m)
// {
// int x, y;
// cin >> x>> y;
// a[i].first = y;
// a[i].second = x;
// }
// sort(all(a));
// int c = 0;
// for (int i = m-1; i >=0; i--)
// {
// if (n == 0) break;
// while(a[i].second!=0&&n!=0)
// {
// c += a[i].first;
// n--;
// a[i].second--;
// }
// }
// cout << c;
//}
//void ragner()
//{
// int a, b;
// cin >> a >> b;
// int c1 = 0;
// int c2 = 0;
// int c3 = 0;
// if (a == b)
// {
// cout << 0;
// return;
// }
// while (1)
// {
// if (a % 2 == 0)
// {
// c1++;
// a /= 2;
// }
// else if (a % 3 == 0)
// {
// c2++;
// a /= 3;
// }
// else if (a % 5 == 0)
// {
// c3++;
// a /= 5;
// }
// else break;
// }
// while (1)
// {
// if (b % 2 == 0)
// {
// c1--;
// b /= 2;
// }
// else if (b % 3 == 0)
// {
// c2--;
// b /= 3;
// }
// else if (b % 5 == 0)
// {
// c3--;
// b /= 5;
// }
// else break;
// }
// if (a != b) { cout << -1; return; }
// cout << abs(c1)+abs(c2)+abs(c3);
//}
//void ragner()
//{
// int n; cin >> n;
// ve a(n);
// fo(i, n) cin >> a[i];
// int dol = a[0];
// int en = 0;
// fo(i, n - 1)
// {
// if (a[i] - a[i + 1] >= 0)
// en += a[i] - a[i + 1];
// else if (en >= abs(a[i] - a[i + 1]))
// en += a[i] - a[i + 1];
// else
// {
// dol += abs(a[i] - a[i + 1]) - en;
// en = 0;
// }
// }
// cout << dol;
//}
//void ragner()
//{
// string s; cin >> s;
// if (s.size() == 1)
// {
// cout << 0;
// return;
// }
// int sum = 0;
// fo(i, s.size())
// sum += (s[i] - '0');
// string n = to_string(sum);
// int c = 1;
// while (n.size()!=1)
// {
// c++;
// sum = 0;
// fo(i, n.size())
// sum += (n[i] - '0');
// n = to_string(sum);
// }
// cout << c;
//}
//void dec(string &s, int n)
//{
// int o;
// if (n % 2 == 0)
// o = n / 2 - 1;
// else
// o= n / 2;
// cout << s[o];
// string h;
// int k = 0;
// fo(i, s.size())
// {
// if (i == o)
// continue;
// h+= s[i];
// }
// s = h;
//}
//void ragner()
//{
// int n;
// cin >> n;
// string s;
// string s2;
// cin >> s;
// if (n % 2 == 1)
// {
// fo(i, n)
// {
// if (i % 2 == 1)
// {
// s2 = s[i] + s2;
// }
// else s2+= s[i];
// }
// }
// else
// {
// fo(i, n)
// {
// if (i % 2 == 0)
// {
// s2 = s[i] + s2;
// }
// else s2 += s[i];
// }
// }
// cout << s2;
//}
//string s = "ROYGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIVGBIV";
//void ragner()
//{
// int n;
// cin >> n;
// fo(i, n)
// cout <<s[i];
//}
//void ragner()
//{
// int n; cin >> n;
// vector<ll> a(n+1);
// fo(i, n)
// {
// ll x;
// cin >> x;
// a[x] = i;
// }
// ll m; cin >> m;
// ll v = 0;
// ll p = 0;
// fo(i, m)
// {
// ll x;
// cin >> x;
// v += a[x] + 1;
// p += abs(n - a[x]);
// }
// cout << v << " " << p;
//}
//void ragner()
//{
// map<char, int> a;
// fo(i, 3)
// {
// char x1, x2, x3;
// cin >> x1 >> x2 >> x3;
// if (x2 == '>')
// {
// a[x1]++;
// }
// else a[x3]++;
// }
// if (a['A'] == a['B'] || a['B'] == a['C']||a['C']==a['A'])
// cout << "Impossible";
// else
// {
//
// if (a['A'] == 0)
// cout << 'A';
// else if (a['B'] == 0)
// cout << 'B';
// else if (a['C'] == 0)
// cout << 'C';
// if (a['A'] == 1)
// cout << 'A';
// else if (a['B'] == 1)
// cout << 'B';
// else if (a['C'] == 1)
// cout << 'C';
// if (a['A'] == 2)
// cout << 'A';
// else if (a['B'] == 2)
// cout << 'B';
// else if (a['C'] == 2)
// cout << 'C';
//
// }
//}
//void ragner()
//{
// ll n; cin >> n;
// vector<ll> a(n+1);
// vector<ll> a1(n+1);
// vector<ll> a2(n+1);
// a[0] = 0;
// a1[0] = 0;
// a2[0] = 0;
// fo(i, n+1)
// {
// int x; cin >> x;
// a[i] = x;
// a1[i] = a1[i - 1] + a[i];
// }
// ll m; cin >> m;
// vector<ll> b = a;
// sort(all(b));
// fo(i, n + 1)
// {
// a2[i] = a2[i - 1] + b[i];
// }
// fo(i, m + 1)
// {
// ll x, l, r;
// cin >> x >> l >> r;
// if (x == 1)
// {
// cout << a1[r] - a1[l-1];
// }
// else {
// cout << a2[r] - a2[l-1];
// }
// cout << endl;
// }
// cout << endl;
//}
//void ragner()
//{
// int n, k; cin >> n >> k;
// ve a(n + 1);
// ve a2(n -k+2);
// a[0] = 0;
// fo(i, n + 1)
// {
// int x; cin >> x;
// a[i] = a[i - 1] + x;
// }
// fo(i, n - k + 2)
// {
// a2[i] = a[i + k - 1] - a[i - 1];
// }
// ll y = 1;
// ll min = 999999465645546;
//
// fo(i, n-k + 2)
// {
// if (a2[i] < min)
// {
// min = a2[i];
// y = i;
// }
// }
//
// cout << y;
//}
void ragner()
{
int n, m;
char x;
cin >> n >> m>>x;
vector<vector<char>>a(n,vector<char>(m));
fo(i, n)
{
fo(j, m)
cin >> a[i][j];
}
int c1 = 0;
int c = 0;
map<char, int>ma;
fo(i, n)
{
fo(j, m)
{
if (a[i][j] != x)
continue;
fo(o, 4)
{
int x8 = i + dx4[o];
int y = j + dy4[o];
if (x8 < n && x8 >= 0 && y < m && y >= 0)
{
char x1;
x1 = a[x8][y];
if(x1!='.'&&x1!=x)
ma[x1]++;
}
}
}
}
cout << ma.size();
}
int main()
{
int t = 1; //cin >> t;
while (t--)
{
ragner();
cout << endl;
}
return 0;
}
1151B - Dima and a Bad XOR | 1435B - A New Technique |
1633A - Div 7 | 268A - Games |
1062B - Math | 1294C - Product of Three Numbers |
749A - Bachgold Problem | 1486B - Eastern Exhibition |
1363A - Odd Selection | 131B - Opposites Attract |
490C - Hacking Cypher | 158B - Taxi |
41C - Email address | 1373D - Maximum Sum on Even Positions |
1574C - Slay the Dragon | 621A - Wet Shark and Odd and Even |
1395A - Boboniu Likes to Color Balls | 1637C - Andrew and Stones |
1334B - Middle Class | 260C - Balls and Boxes |
1554A - Cherry | 11B - Jumping Jack |
716A - Crazy Computer | 644A - Parliament of Berland |
1657C - Bracket Sequence Deletion | 1657B - XY Sequence |
1009A - Game Shopping | 1657A - Integer Moves |
230B - T-primes | 630A - Again Twenty Five |